-
-
Notifications
You must be signed in to change notification settings - Fork 33.7k
util: use a global symbol for util.promisify.custom
#31672
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
util: use a global symbol for util.promisify.custom
#31672
Conversation
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: nodejs#31647
|
I’m waiting for CI to finish, so that I know which tests to update. |
util.promisify.customutil.promisify.custom
|
|
||
| In addition to being accessible through `util.promisify.custom`, this | ||
| symbol is [registered globally][global symbol registry] and can be | ||
| accessed in any environment as `Symbol.for('nodejs.util.promisify.custom')`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be noted that any code that uses Symbol.for('nodejs.util.promisify.custom') syntax rather than the util.promisify.custom accessor will not work properly on older versions of Node.js so if compatibility with older versions is important, use of the accessor is preferred.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That will be visible in the History drop‑down, same as with util.inspect.custom, which doesn’t mention this either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer a more explicit comment on it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I recommend doing that in its own PR, as it will affect the documentation of util.inspect.custom (and possibly other symbols) as well.
|
We should probably ensure that all methods which use the internal |
Define `util.promisify.custom` as `Symbol.for(nodejs.util.inspect.custom)`, rather than as `Symbol(util.inspect.custom)`. This allows custom `promisify` wrappers to easily/safely be defined in non‑Node.js environments. Refs: nodejs/node#31647 Refs: nodejs/node#31672
|
My |
Define `util.promisify.custom` as `Symbol.for(nodejs.util.inspect.custom)`, rather than as `Symbol(util.inspect.custom)`. This allows custom `promisify` wrappers to easily/safely be defined in non‑Node.js environments. Refs: nodejs/node#31647 Refs: nodejs/node#31672
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Refs: nodejs/node#31647
Refs: nodejs/node#31672
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Refs: nodejs/node#31647
Refs: nodejs/node#31672
|
Should this be backported to |
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: #31647
PR-URL: #31672
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Notable changes: * [a44da56] - (SEMVER-MINOR) doc: update stability of report features (Colin Ihrig) #32242 * [306ed96] - (SEMVER-MINOR) doc,lib,src,test: make --experimental-report a nop (Colin Ihrig) #32242 * [ea7f89d] - (SEMVER-MINOR) test: remove common.skipIfReportDisabled() (Colin Ihrig) #32242 * [3f1f518] - (SEMVER-MINOR) build: make --without-report a no-op (Colin Ihrig) #32242 * [36ab39f] - (SEMVER-MINOR) build: remove node_report option in node.gyp (Colin Ihrig) #32242 * [514b7c2] - (SEMVER-MINOR) src: unconditionally include report feature (Colin Ihrig) #32242 * [435fbbc] - (SEMVER-MINOR) worker: allow URL in Worker constructor (Antoine du HAMEL) #31664 * [975d6b0] - (SEMVER-MINOR) util: use a global symbol for `util.promisify.custom` (ExE Boss) #31672
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: #31647
PR-URL: #31672
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* update npm to 6.14.3 (Myles Borins)
#32368
* update to uvwasi 0.0.6 (Colin Ihrig) [#32309](#32309)
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* node\_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* update npm to 6.14.3 (Myles Borins)
#32368
* update to uvwasi 0.0.6 (Colin Ihrig) [#32309](#32309)
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* node\_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
macOS package notarization and a change in builder configuration:
The macOS binaries for this release, and future 13.x releases, are now
being compiled on macOS 10.15 (Catalina) with Xcode 11 to support
package notarization, a requirement for installing on .pkg files on
macOS 10.15 and later. Previous builds of Node.js 13.x were compiled on
macOS 10.11 (El Capitan) with Xcode 10. As binaries are still being
compiled to support a minimum of macOS 10.10 (Yosemite) we do not
anticipate this having a negative impact on Node.js 13.x users with
older versions of macOS.
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* update npm to 6.14.3 (Myles Borins)
#32368
* update to uvwasi 0.0.6 (Colin Ihrig)
#32309
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* lib:
* add --disable-proto option to cli (Gus Caplan)
#32279
* node_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
macOS package notarization and a change in builder configuration:
The macOS binaries for this release, and future 13.x releases, are now
being compiled on macOS 10.15 (Catalina) with Xcode 11 to support
package notarization, a requirement for installing on .pkg files on
macOS 10.15 and later. Previous builds of Node.js 13.x were compiled on
macOS 10.11 (El Capitan) with Xcode 10. As binaries are still being
compiled to support a minimum of macOS 10.10 (Yosemite) we do not
anticipate this having a negative impact on Node.js 13.x users with
older versions of macOS.
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* upgrade npm to 6.14.4 (Ruy Adorno)
#32495
* update to uvwasi 0.0.6 (Colin Ihrig)
#32309
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* lib:
* add --disable-proto option to cli (Gus Caplan)
#32279
* node_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
macOS package notarization and a change in builder configuration:
The macOS binaries for this release, and future 13.x releases, are now
being compiled on macOS 10.15 (Catalina) with Xcode 11 to support
package notarization, a requirement for installing on .pkg files on
macOS 10.15 and later. Previous builds of Node.js 13.x were compiled on
macOS 10.11 (El Capitan) with Xcode 10. As binaries are still being
compiled to support a minimum of macOS 10.10 (Yosemite) we do not
anticipate this having a negative impact on Node.js 13.x users with
older versions of macOS.
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* upgrade npm to 6.14.4 (Ruy Adorno)
#32495
* update to uvwasi 0.0.6 (Colin Ihrig)
#32309
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* lib:
* add --disable-proto option to cli (Gus Caplan)
#32279
* node_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
macOS package notarization and a change in builder configuration:
The macOS binaries for this release, and future 13.x releases, are now
being compiled on macOS 10.15 (Catalina) with Xcode 11 to support
package notarization, a requirement for installing on .pkg files on
macOS 10.15 and later. Previous builds of Node.js 13.x were compiled on
macOS 10.11 (El Capitan) with Xcode 10. As binaries are still being
compiled to support a minimum of macOS 10.10 (Yosemite) we do not
anticipate this having a negative impact on Node.js 13.x users with
older versions of macOS.
Notable changes:
* build:
* macOS package notarization (Rod Vagg)
#31459
* deps:
* upgrade npm to 6.14.4 (Ruy Adorno)
#32495
* update to uvwasi 0.0.6 (Colin Ihrig)
#32309
* upgrade to libuv 1.35.0 (Colin Ihrig)
#32204
* lib:
* add --disable-proto option to cli (Gus Caplan)
#32279
* node_report:
* move diagnostic reports to stable (Colin Ihrig)
#32242
* worker:
* allow URL in Worker constructor (Antoine du HAMEL)
#31664
* util:
* use a global symbol for `util.promisify.custom` (ExE Boss)
#31672
PR-URL: #32376
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: nodejs#31647
PR-URL: nodejs#31672
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: nodejs#31647
PR-URL: nodejs#31672
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Fixes: #31647
Backport-PR-URL: #32349
PR-URL: #31672
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Refs: nodejs/node#31647
Refs: nodejs/node#31672
Define `util.promisify.custom`
as `Symbol.for("nodejs.util.inspect.custom")`, rather than
as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined
in non‑Node.js environments.
Refs: nodejs/node#31647
Refs: nodejs/node#31672
Define `util.promisify.custom` as `Symbol.for("nodejs.util.inspect.custom")`, rather than as `Symbol("util.inspect.custom")`.
This allows custom `promisify` wrappers to easily/safely be defined in non‑Node.js environments.
Refs: nodejs/node#31647
Refs: nodejs/node#31672
Define
util.promisify.customas:rather than as:
This allows custom
promisifywrappers to easily/safely be defined in non‑Node.js environments and for non‑Nodepromisifyimplementations to be interoperable.Fixes: #31647
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes